/*
* Copyright (C), COMTTI
*
* Created on:2023.02.14
* Auther    :ZMC 
*
*/

#ifndef __SIMPLE_EVENT_H
#define __SIMPLE_EVENT_H

#ifdef __cplusplus
extern C {
#endif

#include <stdint.h>

typedef enum{
    event_reset,
    event_change_server,
    event_ota,
    event_save_threshold,

    event_max,
}simple_event_enum;

typedef void (*pfunc)(void* param);

typedef struct{
    uint32_t event;
    uint32_t time_base;
    uint32_t delay;
    pfunc    cb[event_max];
    void*    param[event_max];
}simple_event_t;

/**
 * @brief 注册事件回调
 * 
 * @param event 
 * @param cb 
 */
void simple_event_reg(simple_event_enum event, pfunc cb, void* param);

/**
 * @brief 不管发送多少次，只执行一次
 * 
 * @param event 
 */
void simple_event_send(simple_event_enum event, uint32_t delay_ms);

/**
 * @brief 事件处理
 * 
 */
void simple_event_handle(void);

/**************************************************************************/

void simple_event_init(void);

#ifdef __cplusplus
}
#endif

#endif
